﻿using System.Web.Http.Controllers;
using System.Web.Http.Filters;

namespace RDSEngine.Filters
{
    /// <summary>
    /// 过滤器
    /// </summary>
    public class LogFilter : ActionFilterAttribute
    {
        /// <summary>
        /// 在Action方法运行之前调用
        /// </summary>
        /// <param name="actionContext"></param>
        public override void OnActionExecuting(HttpActionContext actionContext)
        {

            //1.如果保留如下代码，则会运行.net framework定义好的行为验证，如果希望自定义行为验证，则删除如下代码
            // base.OnActionExecuting(actionContext);

            //2.获取控制器作用的Controller和action的名字
            string controllerName = actionContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();
            string actionName = actionContext.ActionDescriptor.ActionName.ToLower();
            //actionContext.ControllerContext.Request.

            //HttpContext.Current.Response.Write("行为过滤器OnActionExecuting作用于" + controllerName + "控制器下的" + actionName + "方法运行之前");
        }

        /// <summary>
        /// 在Action方法运行之后调用
        /// </summary>
        /// <param name="actionExecutedContext"></param>
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            base.OnActionExecuted(actionExecutedContext);

            //1.如果保留如下代码，则会运行.net framework定义好的行为验证，如果希望自定义行为验证，则删除如下代码
            // base.OnActionExecuted(actionExecutedContext);

            //2.获取控制器作用的Controller和action的名字
            string controllerName = actionExecutedContext.ActionContext.ControllerContext.ControllerDescriptor.ControllerName.ToLower();
            string actionName = actionExecutedContext.ActionContext.ActionDescriptor.ActionName.ToLower();
            //HttpContext.Current.Response.Write("行为过滤器OnActionExecuted作用于" + controllerName + "控制器下的" + actionName + "方法运行之后");
        }
    }
}
